package API.RegexDome;

/**
 * ClassName:RegexText016
 * Package:API.RegexDome
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/2/1-22:53
 * @Version:v1.0
 */
public class RegexText016 {
    /*
     *   -----------非捕获分组-----------
     * 分组之后不需要再用本组数据,仅仅是把数据括起来
     * (?:正则)  获取所有    Java(?:8|11|17)
     * (?=正则)  获取前面部分 Java(?=8|11|17)
     * (?!正则)  获取不是指定内容前面部分  Java(?!8|11|17)
     * */
    public static void main(String[] args) {
        //身份证号码的简易正则表达式
        //非捕获分组：仅仅是把数据括起来
        //特点：不占用组号
        //这里\\1报错原因：(?:)就是非捕获分组,此时是不占用组号
        String regex = "[1-9][0-9]{16}(?:\\d|X|x)\\1";
        System.out.println("140221200004042110".matches(regex));

        //  /^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/
    }
}


/*
* 1.正则表达式中分组有两种
*   捕获分组,非捕获分组
* 2.捕获分组(默认)
*   可以获取每组中内容反复使用
* 3.组号特点
*  从1开始,连续不间断
*   以左括号为基准,最左边的是第一组
* 4.非捕获分组
*   分组之后不需要再用本组数据,仅仅把数据括起来,不占用组号
*   (?:正则) (?=正则) (?!正则)都是非捕获分组*/